var events = new Object();
events.TEXT = function (nsConn, msg) {
    data = decodeMsg(msg)
    addChatShowMsg(data.from,data.body,data.from!=selfname?'left':'right')
}
events.FILE = function (nsConn, msg) {
    data = JSON.parse(msg.Body)
    console.log(data.from,data.name)
    addFileShowMsg(data.name,getDecodeA2B(data.from)!=selfname?'left':'right',data.key,getDecodeA2B(data.from))
}
events.IMG = function(nsConn, msg) {
    data = decodeMsg(msg)
    addImgShowMsg(data.from,data.body+".jpg",data.from!=selfname?'left':'right')
}

// 有用户加入
events.LoginIn = function(nsConn, msg) {
    addChatNotice(msg.Body+" 加入了聊天室")
}
var conn;
neffos.dial("/ws", { default: events }).then((result)=>{
    result.connect("default").then((result)=>{
        conn = result
    });
});

// 文本消息广播
function messageSend() {
    msg = $('#msg').val()
    if(msg == '') {
        return
    }
    conn.emit("OnChat",msg)
    document.getElementById('msg').value = ''
}

// 发送文件消息
// 此时文件已经用 http 接口上传，返回了 key ，现在用 ws 广播出去
function fileSend(key, name, size) {
    obj = new(Object)
    obj.key = key
    obj.name = name
    obj.size = size
    conn.emit("FileSend",JSON.stringify(obj))
}
// 发送图片
function imgSend(key) {
    obj = new(Object)
    obj.key = key
    conn.emit("ImgSend",key)
}

// msg 解码 
function decodeMsg(msg) {
    array = JSON.parse(msg.Body)
    data = new Object()
    Object.keys(array).forEach(function(index) {
        data[index] = getDecodeA2B(array[index])
    });
    return data
}

function getDecodeA2B(str) {
    console.log(str)
    return decodeURIComponent(atob(str).split('').map(function(c) {
        return '%'+('00'+c.charCodeAt(0).toString(16)).slice(-2);
    }).join(''))
}